import time
import unittest
from common.functions import browser_operation, host, backhost
from page.reception.goods.add_goods_page import AddGoodsPage, By
from page.backstage.backstage_page import Backstage
from page.reception.goods.goods_search_page import SearchPage

# 准备管理员账号密码
userinfo = {
    'username': 'admin',
    'password': 'admin123'
}


class AddGoodsTestCase(unittest.TestCase):
    # 大夹子
    @classmethod
    def setUpClass(cls) -> None:
        # 打开浏览器
        driver = browser_operation()
        # 创建AddGoodsPage对象
        cls.add = AddGoodsPage(driver)
        # 创建Backstage对象
        cls.backstage = Backstage(driver)
        # 创建SearchPage对象
        cls.search = SearchPage(driver)
        # 请求目标网址
        cls.backstage.get_website(backhost)

    # 添加商品操作
    def test_01_add_goods(self):
        # 后台登录操作
        self.backstage.implicitly_wait()
        # 点击xx
        self.backstage.click_X()
        # 点击logo
        self.backstage.backstage_login()
        # 账号密码输入
        self.backstage.input_username(userinfo['username'])
        # 密码输入
        self.backstage.input_password(userinfo['password'])
        # 点击登录按钮
        self.backstage.btn_login()
        # 切换菜单栏frame
        self.backstage.menu_frame()
        # 点击商品管理
        self.add.g_management()
        # 返回上一级frame
        self.add.change_parent_frame()
        # 切换main_frame
        self.add.min_frame()
        # 点击添加商品
        self.add.add_goods()

        # 添加商品操作
        # 添加商品名称
        self.add.goods_input('小灵通')
        # 添加商品分类
        self.add.goods_classification('21')
        # 清空商品价格输入框
        self.add.clear((By.NAME, 'shop_price'))
        # 添加商品价格
        self.add.goods_price('1000')
        # 点击确定按钮
        self.add.btn()
        # 强制等待 1S
        time.sleep(1)

        # 打开新的标签页,并访问前台网址
        self.add.new_window(host)
        # 获取所有窗口句柄(driver.window_handles[])
        news_handle = self.add.driver.window_handles[1]
        # 切换标签页(driver.switch_to.window())
        self.add.driver.switch_to.window(news_handle)

        # 前台搜索操作
        # 搜索框搜索添加的商品名
        self.search.goods_input('小灵通')
        # 点击搜索按钮
        self.search.search_btn()
        # 点击搜索后的商品
        self.add.new_goods()
        # 获取到获取商品名
        text = self.add.text()
        # 断言
        self.assertEqual('小灵通', text)

    # 后大夹子
    @classmethod
    def tearDownClass(cls) -> None:
        # 退出浏览器
        cls.backstage.quit()


if __name__ == '__main__':
    unittest.main(verbosity=2)
